]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shell-util: Only use systemd if gnome-shell is managed by systemd
authorSebastian Wick <sebastian.wick@redhat.com>
Tue, 16 Apr 2024 14:29:48 +0000 (16:29 +0200)
committerMarge Bot <marge-bot@gnome.org>
Mon, 22 Apr 2024 23:11:06 +0000 (23:11 +0000)
Simply looking at the return value of sd_pid_get_user_unit can be used
to determine if the process is in a systemd unit, but it doesn't say if
gnome-shell is managed by systemd.

For example, running toolbx on a host with systemd creates a libpod
unit, even if the gnome-shell that gets started in the toolbx is itself
not managed by systemd.

We can make sure that gnome-shell is managed by systemd simply by
checking if the unit we're running starts with org.gnome.Shell.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3267>

src/shell-util.c

index 3f91d547df29012004fd9b467a03b229d203e7de..00e3aa16c21c10ef6c2469dabe7af8baf30af4d5 100644 (file)
@@ -635,7 +635,8 @@ shell_util_systemd_call (const char           *command,
    */
   res = sd_pid_get_user_unit (getpid (), &self_unit);
 
-  if (res == -ENODATA)
+  if (res == -ENODATA ||
+      (res >= 0 && !g_str_has_prefix (self_unit, "org.gnome.Shell")))
     {
       g_task_return_new_error (task,
                                G_IO_ERROR,